Statische verschachtelte Klassen und innere Klassen

Seit JDK 1.1 bietet Java die Möglichkeit verschachtelte Klassen zu erstellen. Eine verschachtelte Klasse ist definiert als eine Klasse innerhalb einer anderen Klasse. Es gibt zwei Arten von verschachtelten Klassen: statische verschachtelte Klassen und innere Klassen.

Eine statische verschachtelte Klasse wird innerhalb einer anderen Klasse mit dem Schlüsselwort static deklariert oder innerhalb eines statischen Kontextes dieser Klasse. Eine statische Klasse hat keinen Zugriff auf instanzspezifische Daten.

Eine innere Klasse ist eine nichtstatische Klasse, die innerhalb einer anderen Klasse deklariert wird. Sie hat Zugriff auf alle Instanzdaten der umgebenden Klasse, einschließlich privater Felder und Methoden. Innere Klassen können auf statische Daten zugreifen, aber keine statischen Mitglieder deklarieren, sofern diese Mitglieder nicht Konstanten zur Kompilierungszeit sind.

Die Entscheidung, welche Art von verschachtelter Klasse man verwenden soll, hängt von den Datentypen ab, auf welche die verschachtelte Klasse zugreifen muss. Falls man Zugriff auf Instanzdaten benötigt, braucht man eine innere Klasse. Falls dies nicht der Fall ist, reicht auch eine statische verschachtelte Klasse.

Die häufigste Verwendung einer inneren Klasse sind Event-Handler für GUI-basierte Anwendungen. Diese Klassen werden üblicherweise anonym deklariert, für jede Komponente, welche einen Event-Handler benötigt. Der Vorteil des Einsatzes einer inneren Klasse als Event-Handler besteht darin, dass man umfangreiche If/Else-Anweisungen vermeidet, um zu entscheiden, um welche Komponente es gerade geht. Jede Komponente erhält ihren eigenen Event-Handler, sodass jeder Event-Handler implizit die Komponente kennt, für die er gedacht ist.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Statische verschachtelte Klassen und innere Klassen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *